#ifndef USERSTRUCT_H
#define USERSTRUCT_H

#define pi 3.141592653589793238

//<--------------c 结构体定义--------------

// 下传支路标志 发送者填写
typedef struct brdeph22para
{       int    ref_epoch_week;
        double ref_epoch_sow;           // 星历参考历元，秒，实际上这个数也是toe
        double fit_error;               // 星历拟合误差
        double URE;                     // URE 精度  暂时不知任何计算，060905，clc

        double a;                       // 长半轴(a)
        double adot;

        double e;                       // 偏心率e
        double omega;                   // 近地点幅角

        double deltan;                  // 卫星平均运动速率与计算之差
        double dot_deltan;

        double M0;                      // 参考时间的平近点角
        double OMEGA0;                  // 周开始时刻计算的升交点经度，clc modified 2006-09-06
        double OMEGAdot;                // 升交点经度变化率
        double i0;   	                // 参考时间的轨道倾角
        double idot; 	                // 轨道倾角变化率

        double cuc;  	                // 纬度幅角的余弦调和改正项的振幅
        double cus;  	                // 纬度幅角的正弦调和改正项的振幅
        double crc;  	                // 轨道半径的余弦调和改正项的振幅
        double crs;  	                // 轨道半径的正弦调和改正项的振幅
        double cic;  	                // 轨道倾角的余弦调和改正项的振幅
        double cis;  	                // 轨道倾角的余弦调和改正项的振幅

        double crc3u;
        double crs3u;
        double cic3u;
        double cis3u;

        double deltaCrs;
        double deltaCrc;

        double edot;
        double wdot;
 }brdeph22para;

/*BD2信息处理系统管控系统发送的卫星广播星历参数格式
  为了更好地与系统兼容，采用与系统完全一致的定义方式*/
typedef struct X32
{
    unsigned char nsat;                     // 卫星编号
    int           Ngp;                      // 星历组数 <=24
    brdeph22para  RNSSbrd_arry[24];         // 15个广播星历参数+URE+星历拟合误差
}X32;

/* BD2系统采用的CGS2000参考椭球参数
  为了更好地与系统兼容，采用与系统完全一致的定义方式*/
typedef struct CGS2000_PAR	//CGS2000参考椭球参数
{
    char refname[10];	//参考系名称
    double earthmass;	//地球质量
    double GM;	      	//地球质量*引力常数  modified by clc, 2006-09-05 16:00:00
    double omega_earth; //地球自转速度(added by clc, 060719)
    double eartha;		//椭球长半径
    double earthb;		//椭球短半径
    double flat;		//地球扁率
    double vlight;		//光速
}CGS2000_PAR;

//为了替换class WeekSecTime为c代码
typedef struct WeekSecTimeA
{
    int    Week;
    double Secs;
}WeekSecTimeA;
//------------------------------------>

#endif //USERSTRUCT_H